package bigdecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {
    public static void main(String[] args) {
        // 直接调用double构造会有精度丢失问题，IDEA 会提示
        BigDecimal bigDecimal = new BigDecimal(12.313213);
        // 应该用字符串构造方法
        BigDecimal bigDecimal1 = new BigDecimal("12.313213");
        // 或者用静态方法
        // 实际上就是return new BigDecimal(Double.toString(val));
        BigDecimal bigDecimal2 = BigDecimal.valueOf(12.313213);

        // 加减乘除
        BigDecimal a = new BigDecimal("0.1315");
        BigDecimal b = new BigDecimal("0.13134");
        BigDecimal res = a.add(b);
        System.out.println(res);

        // 底层就是字符串计算
        // 保留精度 四舍五入
        BigDecimal bigDecimal3 = a.setScale(3, RoundingMode.HALF_UP);
        System.out.println(bigDecimal3);

        // 等值比较应该用compareTo方法 不是equals方法
        // 因为equals会比较精度！
        BigDecimal bigDecimal4 = new BigDecimal("0.1315");
        if (bigDecimal3.compareTo(bigDecimal4) == 0) {
            System.out.println("相等");
        }


    }
}
